package day05;
import java.util.Arrays;

/**
 * 数组的演示
 */
public class ArrayDemo {
    public static void main(String[] args) {
//        // 1)数组定义
//        // 声明整数类型数组a,包含5个元素，每个元素int类型，默认值：0
//        int[] a = new int[5];
//        // 声明浮点型类型数组b,包含10个元素，每个元素double类型，默认值：0.0
//        double[] b = new double[10];
//        // 声明布尔型数组c,包含26个元素，每个元素boolean类型，默认值：false
//        boolean[] c = new boolean[26];
//
//        // 2)数组的初始化：初始化数组中的元素
//        int[] arr1 = new int[3];// 0,0,0
//        int[] arr2 = {2, 5, 8};// 2,4,8
//        int[] arr3 = new int[]{2, 4, 8};// 2,4,8
//        int[] arr4;
////         arr4 = {2,5,8};
//        arr4 = new int[]{2, 5, 8};
//
//        // 3)数组的访问：访问的是数组中的元素
//        int[] arr = new int[3];// 0,0,0
//        System.out.println("数组的长度：" + arr.length); // 3,长度即元素个数
//        System.out.println("数组第1个元素的值为：" + arr[0]);// 0
//        arr[0] = 100;// 给第一个元素赋值为100
//        arr[1] = 200;// 给第二个元素赋值为200
//        arr[2] = 300;// 给第三个元素赋值为300
//        // arr[5] = 400;// 运行时会发生数组下标越界异常：ArrayIndexOutOfBoundsException: 3
//        System.out.println(arr[2]);// 300,输出最后一个元素的值
//        System.out.println(arr[arr.length - 1]);// 300,输出最后一个元素的值
//
//        // 4)数组的遍历/迭代：从头到尾挨个走一遍
//        int[] arr10 = new int[10];
//        for (int i = 0; i < arr10.length; i++) { // 遍历arr数组
//            arr10[i] = (int) (Math.random() * 100); // 给每个元素赋值为0到99的随机数
//            System.out.println(arr10[i]); // 输出每个元素的值
//        }
//        System.out.println("--------------------");
        // 5)数组的复制：System.arraycopy()
//        int[] a = {10, 20, 30, 40, 50};
//        int[] b = new int[6]; //0,0,0,0,0,0
//        //a:源数组
//        //1:源数组的起始下标
//        //b:目标数组
//        //0:目标数组的起始下标
//        //4:要复制的元素个数
//        System.arraycopy(a, 0, b, 2, 4);
//        for (int i = 0; i < b.length; i++) {
//            System.out.println(b[i]);
//        }
        // 6)数组的复制
        // --若目标数组长度>源数组长度，则末尾补默认值
        // --若目标数组长度<源数组长度，则将末尾的截掉
        int[] a1 = {10,20,30,40,50};
        a1 = Arrays.copyOf(a1,4);//灵活性查
        for (int i= 0;i<a1.length;i++){
            System.out.println(a1[i]);
        }

        // 数组扩容
        int[] b1 = {10,20,30,40,50};
        // 数组的扩容（创建了一个更大的新的数组，并将数组复制进去了）
        b1=Arrays.copyOf(b1,b1.length-1);
        for (int i =0;i<b1.length;i++){
            System.out.println(b1[i]);
        }

    }
}
